using System.Collections;
using System.Collections.Generic;

namespace Baula.TextGen.ActiveTemplating
{
    public interface ITablesContext : IEnumerable<ITableInfo>
    {
        void Add(ITableInfo table);
        int Count { get; }
    }

    public class TablesContext : ITablesContext
    {
        private readonly IList<ITableInfo> _tables;

        public TablesContext()
        {
            _tables = new List<ITableInfo>();
        }

        public TablesContext(IEnumerable<ITableInfo> tables)
        {
            _tables = new List<ITableInfo>(tables);
        }

        public void Add(ITableInfo table)
        {
            _tables.Add(table);
        }

        public int Count
        {
            get { return _tables.Count; }
        }

        public IEnumerator<ITableInfo> GetEnumerator()
        {
            return _tables.GetEnumerator();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }
}